<?php
/*
 * 									UNI DATAGRID - biblioteka
 * 
 * 	Klasa z matodami do generowania filtrów, datagrida, szybkich akcji, akcji dodatkowych, eksportu danych,
 * 	możliwość szybkiej edycji data grida, szybkie filtry, zmiana wielkości kolumn, możliwoć przesuwania data grida,
 * 	paginator oparty na poście (cały data grid),
 * 	oparty na głównej tabelce
 * 
 *  Klasa css dla formularza = "UniDataGrid"
 * 
*/	



/*									PROCEDURA POSŁUGIWANIA SIĘ DATAGRIDEM
 * 
 * 				1. W menagerze filtrów definiujemy możliwoci wyszukiwania/filtrów (definiujemy elementy formularza) - za pomocą biblioteki formularza
 *				2. W kontrolerze tworzymy obiekty: UniDataGrid, UniDataGridFiltrManager, UniDataGridOthersManager 
 * 				3. W obiekcie menagerze dodatków definiujemy dodatki dla data grida
 * 				4. W widoku Startujemy formularz, echo na obiekt filtrów, przypisanie formularzowi klasy datagrida
 * 				5. W partialu wsystkie kolumny w postaci tablicy wrzucamy do datagrida, plus dodatkowe parametry
 * 				6. W widoku echo na obiekt UniDataGridOthersManager
 */
class UniDataGrid
{
        /**
         * @var array
         * Default options
         */            
	private $default=array(	
							'maper' 					=> NULL,
							'maper_wersja_jezyk'		=> NULL,
							'maper_inne_ref'			=> array(),						//------ok
							'maper_inne_wersja_jezyk'	=> array(),						//------ok
							'jezyk_kod'					=> NULL,
							'nazwa_grida'				=> NULL,						//------ok
							'labely_kolumn' 			=> array(),						//------ok
							'kolumny'					=> array(),
							'szybkie_akcje'				=> array(),						//------ok
							'akcje_dodatkowe'			=> array(),						//------ok
							'akcja_grida'				=> '',							//------ok
							'czy_sort'					=> true,						//------ok
							'czy_ilosc_rek_strona'		=> true,						//------ok
							'ilosc_pozycji'				=> true,
							'filtry' 					=> array(),						//------ok
							'filtry_ilosc_wiersz'		=> 4,	
							'filtry_label'				=> NULL,
							'klasy szybkich akcji' 		=> array(),
							'ilość rek/strona' 			=> array(2,5,10,15,20,50),		//------ok
							'szablon'					=> 1,							//------ok							
							'czy_licznik'				=> true,						//------ok
							'zasieg_paginatora'			=> 3,							//------ok
							'sortowanie_start'			=> NULL,						
							'nazwa_obiektu'				=> NULL,						//------ok
							
							//@amazur parametryzacja stanu grida
							'rejestr_grida'				=> 'admRejestryStanowObiektow',  //------ok
							'rejestr_grida_obiekt_id'	=> 'rejestr_stan_obiekt_id',
							'rejestr_grida_uzytkownik_id'	=> 'rejestr_stan_obiekt_uzytkow_id_fk',
							'rejestr_grida_nazwa'		=> 'rejestr_stan_obiekt_obiekt_nazwa',
							'rejestr_grida_parametry'	=> 'rejestr_stan_obiekt_parametry',
							'liczba_kolumn'=>4,'czy_wierszami'=>false,
	
							//----------dynamiczne----------------------------------//
							'nr_strony'				=> NULL,						//------ok
							'sort_kolumn'			=> NULL,						//------ok
							'ilość rek/strona ust'	=> 5,							//------ok
							'wartosci_filtrow'		=> array(),						//------ok
							//------------------------------------------------------//
							
							//----------niejawne------------------------------------//
							'count_rekordy'			=> 0,							//------ok
							//------------------------------------------------------//
							); 											

	private $licznik = 0;
	private $licznik2 = 0;								
	public $filtry = array();
	private $_trans;
	
	public function __construct( $p_options = array())
	{
		$jazyk_manager = new JezykPoManager();
		$this->_trans = $jazyk_manager->getTranslator(array('locale' => Zend_Registry::get('Zend_Translate')));
		//$this->_trans = Zend_Registry::get('Zend_Translate');//@amazur
		
		$this->default=array_merge($this->default, $p_options);
		
		if ($this->default['nazwa_obiektu']==NULL)
		{
			$this->default['nazwa_obiektu'] = $this->default['nazwa_grida'];
		}
		
		foreach ($this->default['filtry'] as $v => $s)
		{
			if (!empty($s['kolumna']))
				$this->filtry[] = $s['kolumna'];
		}		
	}	 
	
	/*
	 * 	Funkcja pomocnicza dodajaca parametry dla grida
	 */
	public function DodajParametry($p_options = array())
	{
		$this->default=array_merge($this->default, $p_options);

		if (is_null($this->default['ilość rek/strona ust']))
		{
			$this->default['ilość rek/strona ust'] = 2;
		}	
	}	
	
	//public function 
	
	public function Widok_filtry()
	{
		$out_echo = '';
		
		//------------Numer szablonu------------------------//
		$szablon = $this->default['szablon'];
		
		//------------Ustawianie filtrów-------------------//
		$filtr = new UniForm(array('szablon' => $szablon,'jezyk_kod' => $this->default['jezyk_kod']));
		$licznik = 0;
		$wartosc_filtrow = $this->default['wartosci_filtrow'];

		foreach ($this->default['filtry'] as $v => $s)
		{
			if (isset($wartosc_filtrow[$licznik]))
				$s = array_merge($s,array('wartosc' => $wartosc_filtrow[$licznik]));
			$filtr->$v($s);
			$licznik++;
		}		
		$filtr->submit(array('label'=>$this->_trans->translate('szukaj')));
		$filtr->reset(array('filtry' => $this->filtry,'formularz' => $this->default['nazwa_grida']));
		//-------------------------------------------------//
		$filtr_table = $filtr->getElements();
		
		$out_echo .= '<fieldset class="DataGridFiltry'.$szablon.'" >';
		
		if ($this->default['filtry_label']!=NULL)
			$out_echo .= '<legend>'.$this->_trans->translate($this->default['filtry_label']).'</legend>';
			
		$out_echo .= '<table class="DataGridFiltryTabelka'.$szablon.'" >';
		$licznik = 0;
		$wiersz = array();
		$elementy_wiersz = '';
		foreach ($filtr_table as $v)
		{
			$licznik++;
			//@amazur el kolumnowy jako czesc filtra...

			if ($v instanceof Zend_Form_Element_MultiCheckbox ||$v instanceof Zend_Form_Element_Radio){
				$uklad = new UkladKomponentow();//--Czemu parametry są na sztywno? juz nie sa :P --//
				$uklad = $uklad->uluzKomonenty($v, $this->default['liczba_kolumn'],$this->default['czy_wierszami']);
			    $kolumnowe = '<td class="DataGridFiltryTd'.$uklad.'</td>';}
			if($v instanceof Zend_Form_Element_MultiCheckbox ||$v instanceof Zend_Form_Element_Radio)//spr czy kolumnowy
				$elementy_wiersz .= $kolumnowe;
			else//@amazur			
			$elementy_wiersz .= '<td class="DataGridFiltryTd'.$szablon.'">'.$v->renderViewHelper().'</td>';
			
			if ($licznik==$this->default['filtry_ilosc_wiersz'])
			{
				$wiersz[] = $elementy_wiersz;
				$elementy_wiersz = '';
				$licznik = 0;
			}
			
		}
		
		if ($elementy_wiersz!='')
			$wiersz[] = $elementy_wiersz;
			
		foreach ($wiersz as $v)
		{
			$out_echo .= '<tr class="DataGridFiltryTr'.$szablon.'">'.$v.'</tr>';
		}	
			
		$out_echo .= '</table>';
		$out_echo .= '</fieldset>';
		
		return $out_echo;
	}
	
	/*
	 * 	Przygotowanie nagłówków i ukrytych pomocniczych pól
	 */
	public function Widok_Naglowek()
	{		
		$out_echo = '';
		
		//------------Numer szablonu------------------------//
		$szablon = $this->default['szablon'];
		
		//------------Ustawienia pomocniczych inputów-------//
		$out_echo .= '<input type="hidden" name="nr_strony" value="'.$this->default['nr_strony'].'" id="nr_strony" />';			//--Do trzymania strony
		$out_echo .= '<input type="hidden" value="'.$this->default['sort_kolumn'].'" name="DataGridOrder" id="DataGridOrder">';	//--Do trzymania sortowania		
		$out_echo .= '<input type="hidden" value="status grida" name="DataGridStatus" id="DataGridStatus">';	//--Do trzymania sortowania	
		//--------------------------------------------------//
		
		//------------Ustawienia sortowania-----------------//
		if ($this->default['czy_sort'])
		{
			$sortDiv = '<div class="DataGridSort'.$szablon.'"></div>';
			if (stripos($this->default['sort_kolumn'],'desc'))
				$sort =  str_replace(' desc','',$this->default['sort_kolumn']);
			else
				$sort =  $this->default['sort_kolumn'].' desc';	
		}
		else
		{
			$sortDiv = '';
		}
		//-------------------------------------------------//				
		
		//------------Ustawienie nagłówków kolumn----------//
		$out_echo .= '<tr class="DataGridLabels'.$szablon.'">';
		
		if ($this->default['czy_licznik'])
			$out_echo .= '<th>'.$this->_trans->translate('lp.').'</th>';
		
		foreach ($this->default['labely_kolumn'] as $v => $s)
		{
			if ($this->default['czy_sort'])
			{
				$sort_onclick = ' onclick="document.getElementById(\'DataGridOrder\').value = \''.$sort.'\'; document.forms[\''.$this->default['nazwa_grida'].'\'].submit();" ';
				$sort_klasa = 'class="DataGridSort';
			}
			else
			{
				$sort_onclick = '';
				$sort_klasa = 'class="DataGridBezSort';
			}
			$out_echo .= '<th '.$sort_klasa.$szablon.'" '.$sort_onclick.'>'.$v.$sortDiv.'</th>';	
		}
		
		if (!empty($this->default['szybkie_akcje']))
			$out_echo .= '<th>'.$this->_trans->translate('Szybkie akcje').'</th>';
		
		$out_echo .= '</tr>';
		//-------------------------------------------------//		
		
		return $out_echo;	
	}
	
	/*
	 * 	Przygotowanie zawartoci tabelki grida
	 */
	//------Metoda do wywietlania zawartosci kolumn------------//
	public function Widok_Tabelka($p_model,$p_grid)
	{
		//------------Numer szablonu------------------------//
		$szablon = $this->default['szablon'];
		//exit(0);
		if (fmod($this->licznik,2)==1)
			$out_eval = 'echo \'<tr class="DataGridRowP'.$szablon.' DataGridRow'.$szablon.'">\';';
		else
			$out_eval = 'echo \'<tr class="DataGridRowNP'.$szablon.' DataGridRow'.$szablon.'">\';';	
			
		if ($this->default['czy_licznik'])
		{
			$strony =  ceil($this->default['count_rekordy']/$this->default['ilość rek/strona ust']);
			
			if ($strony<$this->default['nr_strony'])
				$this->default['nr_strony'] = $strony;
				
			$licznik = ($this->default['nr_strony']-1)*$this->default['ilość rek/strona ust']+1+($this->licznik);
			
			$out_eval .= 'echo \'<td class="DataGridLicznik'.$szablon.'">\';';
			$out_eval .= 'echo \''.$licznik.'\';';
			$out_eval .= 'echo \'</td>\';';

		}

		$this->licznik++;
		
		$maper = new $this->default['maper'];		
		foreach ($this->default['kolumny'] as $v => $s)
		{			
			if(isset($p_model[$maper->renderujKolumny($s)]))
			{
				if (strlen($p_model[$maper->renderujKolumny($s)])>50)
					$tresc = substr($p_model[$maper->renderujKolumny($s)],0,50).'...';
				else
					$tresc = $p_model[$maper->renderujKolumny($s)];
				$out_eval .='echo \'<td class="DataGridKrotka'.$szablon.'">'.$tresc.'</td>\';';
			}
			else
				$out_eval .='echo \'<td class="DataGridKrotka'.$szablon.'"></td>\';';
		}
		
		if (!empty($this->default['szybkie_akcje']))
		{
			$this->licznik2++;

			$out_eval .='echo \'<td class="DataGridSzybkieAkcje'.$szablon.'">\';';
			foreach ($this->default['szybkie_akcje'] as $v2)
		    {	
			  	$out_eval .= 'echo '.$v2;
			}
			$out_eval .='echo \'</td>\';';
		}
		
		$out_eval .= 'echo \'</tr>\';';
		return $out_eval;
	}
	
	/*
	 * 	Funkcja pomocniccza dla partiala
	 */
	public function Get_Nazwa()
	{
		return $this->default['nazwa_grida'];
	}
	
	/*
	 * 	Definicja stopki dla widoku grida
	 */
	public function Widok_Stopka()
	{
		$out_echo = '';
		
		//------------Numer szablonu------------------------//
		$szablon = $this->default['szablon'];
		
		//------------Ustawienia zmiennej ilosci rekordów na stronie-----//
		if ($this->default['czy_ilosc_rek_strona'])
		{
			$out_echo .= '<select type="select" name="Ilosc_rekordow" value="'.$this->default['nr_strony'].'" id="nr_strony" class="DataGridIloscRec'.$szablon.'" onchange="document.forms[\''.$this->default['nazwa_grida'].'\'].submit();">';
				foreach ($this->default['ilość rek/strona'] as $v)
				{
					if ($this->default['ilość rek/strona ust']==$v)
						$out_echo .= '<option value="'.$v.'" selected="selected" >'.$v.'</option>';
					else
						$out_echo .= '<option value="'.$v.'" >'.$v.'</option>';	
				}
			$out_echo .= '</select>';	
		}			
		//---------------------------------------------------------------//
		
		return $out_echo;
	}	
	
	/*
	 * 	Definicja kontrolera dla grida
	 */
	public function Kontroler()
	{
		/*
		 * 	Po poscie zczytywane są z formularza dynamicznie zmieniające się parametry
		 * 
		 */
		
		//------------Numer szablonu------------------------//
		$szablon = $this->default['szablon'];
		
		if (!empty($this->default['sortowanie_start']))
		{
			$order = '\''.$this->default['sortowanie_start'].'\'';
		}
		else
			$order = '';			

		if ($this->default['maper_wersja_jezyk']!=NULL)
		{
		    $jezyk = '
			else
    		{
    			$dataGrid->DodajParametry(array(  \'jezyk_kod\' => $GlobalJezyk));
    			if (!empty($where))
	    			$result = $GridSelect->selectAllL($GlobalJezyk,$pgNum, $rowCount,$where,array(),array($formData[\'DataGridOrder\']));
	    		else
	    			$result = $GridSelect->selectAllL($GlobalJezyk,$pgNum, $rowCount,array(),array(),array($formData[\'DataGridOrder\']));
    		}';
		    
		    $jezyk2 = '
		    else
    		{
    			if (!empty($where))
	    			$result = $GridSelect->selectAllL($GlobalJezyk,$pgNum, $rowCount,$where,array(),array('.$order.'));
	    		else
	    			$result = $GridSelect->selectAllL($GlobalJezyk,$pgNum, $rowCount,array(),array(),array('.$order.'));
    		}';
		}
		else
		{		
			$jezyk = '';
			$jezyk2 = '';	
		}			
			
		$procent = '%';
		$kontroler = '
		
		$post_grida = array();
		$post_tab = array();
		$GlobalJezyk = \'\';
		
		if ( $this->_request->isPost() )
    	{	   		
    		//$sesja = new Zend_Session_Namespace( \'post_grida\' );
			//$sesja->post_grida = $this->_request->getPost();
    					
			$rejestr_stanow = new '.$this->default['rejestr_grida'].';
			$loginTab = $rejestr_stanow->getLogin();
			//exit(0);
			foreach ($this->_request->getPost() as $v => $s)
			{	
				if ($post_tab==NULL)
				{
					$post_tab .= $v.\'=>\'.$s;
					//$post_tab .= \'\\\'\'.$v.\'\\\'\'.\'=>\'.\'\\\'\'.$s.\'\\\'\';
				}
				else
					$post_tab .= \',\'.$v.\'=>\'.$s;
					//$post_tab .= \',\\\'\'.$v.\'\\\'\'.\'=>\'.\'\\\'\'.$s.\'\\\'\';
			}

			$post_grid_tab = $rejestr_stanow->selectOne(NULL,array(\''.admRejestryStanowObiektow::adm_RejestryStanow_Obiektow_uzytkownik_id.' = \'.$loginTab[0],
										   \''.admRejestryStanowObiektow::adm_Rejestry_Stanow_Obiektow_nazwa.' = \'. \'\\\''.$this->default['nazwa_obiektu'].'\\\' \'));			
			if ($post_grid_tab==NULL)
			{
				$rejestr_stanow->zInsert(array(\''.admRejestryStanowObiektow::adm_Rejestry_Stanow_Obiektow_nazwa.'\' => \''.$this->default['nazwa_obiektu'].'\',
										   		\''.admRejestryStanowObiektow::adm_RejestryStanow_Obiektow_uzytkownik_id.'\' => $loginTab[0],
										   		\''.admRejestryStanowObiektow::adm_Rejestry_Stanow_Obiektow_parametry.'\' => $post_tab));
			}
			else
			{				
				$rejestr_stanow->zUpdate($post_grid_tab[\'id\'],array(\''.admRejestryStanowObiektow::adm_Rejestry_Stanow_Obiektow_nazwa.'\' => \''.$this->default['nazwa_obiektu'].'\',
										   		\''.admRejestryStanowObiektow::adm_RejestryStanow_Obiektow_uzytkownik_id.'\' => $loginTab[0],
										   		\''.admRejestryStanowObiektow::adm_Rejestry_Stanow_Obiektow_parametry.'\' => $post_tab));					   		
			}
			
    		$formData = $this->_request->getPost();  
    		$dataGrid->DodajParametry(array(  \'sort_kolumn\' => $formData[\'DataGridOrder\'],
    										  \'nr_strony\' => $formData[\'nr_strony\'],
    										  \'ilość rek/strona ust\' => $formData[\'Ilosc_rekordow\']
    										)							
    		);
			
    		if (!empty($dataGrid->filtry))
			{				
				$wartosci_filtrow = array();
				$where = array();
				foreach ($dataGrid->filtry as $v)
				{					
					if (!is_null($formData[$v]))
					{
						$wartosci_filtrow[] = $formData[$v];						
						$where[] = \'IFNULL(\'.$v.\',\\\'%\'.\'\\\') like  \\\'%\'.$formData[$v].\'%\\\' \';
					}				
				}
				$dataGrid->DodajParametry(array(  \'wartosci_filtrow\' => $wartosci_filtrow));
			}
			
    		if (is_null($formData[\'Ilosc_rekordow\']))
    			$rowCount = '.$this->default['ilość rek/strona ust'].'; 
    		else
    			$rowCount = $formData[\'Ilosc_rekordow\'];

    		$pgNum = $formData[\'nr_strony\'];
 
    		if ($GlobalJezyk==\'\')
    		{	    		
    			if (!empty($where))
	    			$result = $GridSelect->selectAll($pgNum, $rowCount,$where,array(),array($formData[\'DataGridOrder\']));
	    		else
	    			$result = $GridSelect->selectAll($pgNum, $rowCount,array(),array(),array($formData[\'DataGridOrder\']));
    		}
			'.$jezyk.'
    	}
    	//-----------------------------------WARUNKI STARTOWE----------------------------------//
    	else
    	{
    		
			$rejestr_stanow = new '.$this->default['rejestr_grida'].';
			$loginTab = $rejestr_stanow->getLogin(); 
			$post_grid_tab = $rejestr_stanow->selectOne(NULL,array(\''.admRejestryStanowObiektow::adm_RejestryStanow_Obiektow_uzytkownik_id.' = \'.$loginTab[0],\''.admRejestryStanowObiektow::adm_Rejestry_Stanow_Obiektow_nazwa.' = \'. \'\\\''.$this->default['nazwa_obiektu'].'\\\' \'));	
			
			if ($post_grid_tab!=NULL)
			{
				
				$post_grida[\'nr_strony\'] = \'\';
				$post_grida[\'Ilosc_rekordow\'] = \'\';
				$wartosci_filtrow = \'\';
				
				$post_tymcz = explode(\',\',$post_grid_tab[\''.admRejestryStanowObiektow::adm_Rejestry_Stanow_Obiektow_parametry.'\']);
				
				$post_grida = array();
				foreach ($post_tymcz as $v)
				{
					$post_tymcz2 = explode(\'=>\',$v);
					$post_grida=array_merge($post_grida, array($post_tymcz2[0]=>$post_tymcz2[1]));
				}
			}
			
			if (!empty($post_grida))
			{
				$filtry_grida = $dataGrid->filtry;
				
				foreach ($filtry_grida as $v)
				{
					if (!is_null($post_grida[$v]))
					{
						
						$wartosci_filtrow[] = $post_grida[$v];						
						$where[] = \'IFNULL(\'.$v.\',\\\'%\'.\'\\\') like  \\\'%\'.$post_grida[$v].\'%\\\' \';
					}
				}
				
				if (!isset($post_grida[\'Ilosc_rekordow\']))
					$post_grida[\'Ilosc_rekordow\'] = 5;	
					
				$rowCount = $post_grida[\'Ilosc_rekordow\']; 				
				$dataGrid->DodajParametry(array(  \'wartosci_filtrow\' => $wartosci_filtrow,
												  \'ilość rek/strona ust\' => $post_grida[\'Ilosc_rekordow\'],
												  \'nr_strony\' => $post_grida[\'nr_strony\']));
			}			
			
			if (isset($post_grida[\'Ilosc_rekordow\']))
			{
				$rowCount = $post_grida[\'Ilosc_rekordow\'];
			}
			else
			{
    			$rowCount = '.$this->default['ilość rek/strona ust'].';  			
    		}
    			
    		if (isset($post_grida[\'nr_strony\']))
				$pgNum = $post_grida[\'nr_strony\'];
			else
    			$pgNum = '.$this->default['nr_strony'].';

    		if ($GlobalJezyk==\'\')
    		{
	    			
    			
    			if (!empty($where))
    			{
    				$result = $GridSelect->selectAll($pgNum, $rowCount,$where,array(),array('.$order.'));
	    		}
	    		else
				{					
	    			$result = $GridSelect->selectAll($pgNum, $rowCount,array(),array(),array('.$order.'));
	    		}
    		}
			'.$jezyk2.'
    	}
		
    	$this->view->datagrid = $dataGrid;
	
    	//-------------Ogólna ilosć rekordów----------------------------------------------------//
    	if (!empty($where))
    		$count = $GridSelect->selectAll(NULL,NULL,$where,array($GridSelect->_name => \'count(*) As c\'));
    	else
			$count = $GridSelect->selectAll(NULL,NULL,array(),array($GridSelect->_name => \'count(*) As c\'));
			
    	//-------------Potrzebne dla przypadku zmieniających sie iloci stron, a licznik rekordów-------//
    	foreach ($count as $v)
    	{   
    		$dataGrid->DodajParametry(array(  \'count_rekordy\' => $v[\'c\'])
 									);
    	}
    	//exit(0);
    	//-------------Wersje językowe z innych tabel-------------------------------------------//
    	$this->view->jezyk_kod = $GlobalJezyk;
    	//--------------------------------------------------------------------------------------//
    	
		$paginator = Zend_Paginator::factory( $result );
		$paginator->setCurrentPageNumber( $pgNum );
		$paginator->setItemCountPerPage( $rowCount );
		$paginator->setPageRange( '.$this->default['zasieg_paginatora'].' );
		$this->view->paginator = $paginator;				
		';
		
		return $kontroler;
	}
	
	/*
	 * 	Definicja widoku dla grida
	 */
	public function Widok()
	{
		//------------Numer szablonu------------------------//
		$szablon = $this->default['szablon'];
		
		$akcja_grida = '\''.$this->default['akcja_grida'].'\'';
		
		$out_eval = '';
		$out_eval .= 'echo \'<form method="POST" action="\';';		
		$out_eval .= 'echo $this->url(array(),'.$akcja_grida.');';
		$out_eval .= 'echo \'" name="'.$this->default['nazwa_grida'].'" class="DataGrid'.$szablon.'">\';';		
			$out_eval .= 'echo \'<input type="hidden" value="'.$this->default['nazwa_grida'].'" id="DataGridNazwa" name="DataGridNazwa">\';';
			
			if (!empty($this->default['filtry']))
			{
				$out_eval .= 'echo $this->datagrid->Widok_filtry();';
			}
			
			if ($this->default['ilosc_pozycji'])
				$out_eval .= 'echo \'<br><div class="DataGridLiczbPoz'.$szablon.'">'.$this->_trans->translate('Liczba pozycji:').' '.$this->default['count_rekordy'].'</div>\';';
			
			if (!empty($this->default['akcje_dodatkowe']))
			{
				$out_eval .= 'echo \'<div class="DataGridAkcjeDodatkowe'.$szablon.'">\';';
				foreach ($this->default['akcje_dodatkowe'] as $v)
				{
					$out_eval .= 'echo \'<span class="DataGridAkcjaDodatkowaSpan'.$szablon.'">\';';
						$out_eval .= 'echo $this->AclMenuOtherHelper('.$v.',$this->acl);';
					$out_eval .= 'echo \'</span>\';';	
				}
				$out_eval .= 'echo \'</div>\';';
			}	
			$out_eval .= 'echo \'<div class="DataGridTableDiv'.$szablon.'">\';';
			$out_eval .= 'echo \'<table class="DataGridTable'.$szablon.'" rules="All">\';';
				$out_eval .= 'echo $this->datagrid->Widok_Naglowek();'; 

			$maper = '\''.$this->default['maper'].'\'';	
			
			if (!empty($this->default['maper_inne_wersja_jezyk'])&&!empty($this->default['maper_inne_ref']))
			{
				$ref = '';
				foreach ($this->default['maper_inne_ref'] as $v)
				{
					if ($ref==NULL)
						$ref .= $v;
					else
						$ref .= ','.$v;
				}
				 
				$jez = '';
				foreach ($this->default['maper_inne_wersja_jezyk'] as $v)
				{
					if ($jez==NULL)
						$jez .= $v;
					else
						$jez .= ','.$v;
				}
					
				$out_eval .= 'echo $this->partialLoop(\'_partials/'.$this->default['nazwa_grida'].'-listing.phtml\', $this->ListTableP('.$maper.',$this->paginator, $this->acl, array(),array('.$ref.'),array('.$jez.'),$this->jezyk_kod, $this->datagrid));';
			}
			else
			{
				$out_eval .= 'echo $this->partialLoop(\'_partials/'.$this->default['nazwa_grida'].'-listing.phtml\', $this->ListTableP('.$maper.',$this->paginator, $this->acl, array(),array(),array(),NULL,$this->datagrid));';	
			}	
	
			$out_eval .= 'echo \'</table>\';';
			$out_eval .= 'echo \'</div>\';';
			$out_eval .= 'echo \'<div class="DataGridFooter'.$szablon.'">\';';
				$out_eval .= 'echo $this->datagrid->Widok_Stopka();';
				$out_eval .= 'echo \'<div class="DataGridPaginator'.$szablon.'">\';';
				$out_eval .= 'echo $this->paginationControl( $this->paginator, \'Sliding\', \'p2.phtml\' );';
				$out_eval .= 'echo \'</div>\';';				 		
			$out_eval .= 'echo \'</div>\';';		 		
		$out_eval .= 'echo \'</form>\';';
		
		return $out_eval;	
	}	
}